package com.seecen.aop;

import org.aspectj.lang.ProceedingJoinPoint;

/**
 * 通知类型：
 *  1、前置通知：在目标方法执行之前执行
 *  2、后置通知：在目标方法执行之后执行
 *  3、异常通知：在目标方法出现异常时执行
 *  4、最终通知：在目标方法执行之后执行
 *  5、环绕通知：在目标方法执行之前和之后执行
 *
 */
public class MyLog {
    public Object around(ProceedingJoinPoint pointcut) {
        System.out.println("around环绕前置通知");
        try {
            Object returnValue = pointcut.proceed();
            System.out.println("around业务方法的返回值为： " + returnValue);
            return returnValue; // 返回值传递到代理对象中
        } catch (Throwable e) {
            System.out.println("around异常通知" + e);
        }
        System.out.println("around环绕后置通知");
        return null;
    }
    public void before(){
        System.out.println("前置通知");
    }
    public void afterReturning(){
        System.out.println("后置通知");
    }
    public void afterThrowing(){
        System.out.println("异常通知");
    }
    public void after(){
        System.out.println("最终通知");
    }

}
